package com.dhb.pattern.singleton.lazy;

/**
 * 功能描述：简单的赖汉式单例，在调用者需要的时候才进行实例化。
 * 创建人：citymoon
 * 创建日期：2019/5/4
 */
public class LazySimpleSingleton {

    private static LazySimpleSingleton lazySimpleSingleton = null;

    private LazySimpleSingleton(){}



    /**
     * 线程安全问题，当两个线程同时进入到if内时，就会实例化两个不同的对象。
     * 任何一个线程执行完成，另一个线程再执行的时候，结果就会产生两个不同的对象。
     * 增加synchronized关键字在方法上，解决线程安全问题。
     * @return
     */
    public static synchronized LazySimpleSingleton getInstance(){
        if (lazySimpleSingleton == null){
            lazySimpleSingleton = new LazySimpleSingleton();
        }
        return lazySimpleSingleton;
    }
}
